﻿<?php
require_once 'JSON.php';


/**
 * 欢迎访问
 * http://code.google.com/p/qdbapi/ 
 * 获取最新版本
 *
 */

class QDoubanMovie{
	/**
	 * 构造函数
	 * @param string $id 影片的豆瓣id
	 */
	public function QDoubanMovie($id){
		$this->id = $id;
		$this->parse();
	}
	
	/**
	 * 解析json decode()返回的数组
	 * @param array $json_array 被解析的数组
	 */
	private function inner_parse($json_array){
		$this->title = $json_array['title']['$t'];
		$this->link = array();
		$this->attribute = array();
		foreach ($json_array['link'] as $key => $value){
			$this->array2element($this->link, $value, '@rel', '@href');
		}
		foreach ($json_array['db:attribute'] as $key => $value){
			$this->arrays2element($this->attribute, $value, '@name', '$t');
		}
		$this->summary = $json_array['summary']['$t'];
	}
	
	/**
	 * 获得json数组并解析
	 */
	private function parse(){
		$movieUrl = 'http://api.douban.com/movie/subject/';
		$requestEnd = '?alt=json';
		$movieUrl = $movieUrl.$this->id.$requestEnd;
		$json = $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
		$contents = file_get_contents($movieUrl);
		$value = $json->decode($contents);
		$this->inner_parse($value);
	}
	
	/**
	 * 例：$src = array('@rel' => 'image', '@href' => 'http://douban.com/a.jpg')
	 * 则调用
	 *  array2element($dest, $src, '@rel', '@href')
	 * 后有
	 * $dest['image'] => 'http://douban.com/a.jpg'
	 * @param array $src_array 源数组
	 * @param array $dest_array 目标数组
	 * @param string $key_name 键名
	 * @param string $value_name 值名
	 */
	private function array2element(&$dest_array, $src_array, $key_name, $value_name){
		$dest_array[$src_array[$key_name]] = $src_array[$value_name];
	}
	
	/**
	 * @see array2element()
	 */
	private function arrays2element(&$dest_array, $src_array, $key_name, $value_name){
		if (array_key_exists($src_array[$key_name], $dest_array)){
			$dest_array[$src_array[$key_name]] .= ', '.$src_array[$value_name];
		}
		else{
			$dest_array[$src_array[$key_name]] = $src_array[$value_name];
		}
	}
	
	/**
	 * 返回影片相关链接
	 * @param string $key ='image'返回图片链接，='self'返回豆瓣页面
	 */
	public function get_link($key){
		return $this->link[$key];
	}
	
	/**
	 * @return 影片名
	 */
	public function get_title(){
		return $this->title;
	}

	/**
	 * @return 导演名
	 */
	public function get_director(){
		return $this->attribute['director'];
	}
	
	/**
	 * @return 主演，多个主演则用', '隔开
	 */
	public function get_cast(){
		return $this->attribute['cast'];
	}
	
	/**
	 * @return 译名
	 */
	public function get_aka(){
		return $this->attribute['aka'];
	}
	
	/**
	 * @return 简介
	 */
	public function get_summary(){
		return $this->summary;
	}
	
}

?>